package entitybeans;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import dto.CentroDistribucionDTO;
import dto.ItemPedidoDTO;
import dto.PedidoDTO;
import dto.TiendaDTO;

@Entity
public class Pedido {
	@Id @GeneratedValue
	private Integer  ref;
	private boolean pendienteDeDistribucion;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecha;
	
	@ManyToOne
	private Tienda tienda;
	
	@ManyToOne
	private CentroDistribucion centroDistribucion;
	
	@OneToMany(mappedBy="pedido", fetch= FetchType.EAGER)
	private List<ItemPedido> itemsPedidos;
	
	public Pedido() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Pedido(boolean pendienteDeDistribucion, Tienda tienda,
			CentroDistribucion centroDistribucion, List<ItemPedido> itemsPedidos) {
		super();
		this.pendienteDeDistribucion = pendienteDeDistribucion;
		this.tienda = tienda;
		this.centroDistribucion = centroDistribucion;
		this.itemsPedidos = itemsPedidos;
	}

	public Integer getRef() {
		return ref;
	}

	public void setRef(Integer ref) {
		this.ref = ref;
	}

	public boolean isPendienteDeDistribucion() {
		return pendienteDeDistribucion;
	}

	public void setPendienteDeDistribucion(boolean pendienteDeDistribucion) {
		this.pendienteDeDistribucion = pendienteDeDistribucion;
	}

	public Tienda getTienda() {
		return tienda;
	}

	public void setTienda(Tienda tienda) {
		this.tienda = tienda;
	}

	public CentroDistribucion getCentroDistribucion() {
		return centroDistribucion;
	}

	public void setCentroDistribucion(CentroDistribucion centroDistribucion) {
		this.centroDistribucion = centroDistribucion;
	}

	public List<ItemPedido> getItemsPedidos() {
		return itemsPedidos;
	}

	public void setItemsPedidos(List<ItemPedido> itemsPedidos) {
		this.itemsPedidos = itemsPedidos;
	}

	public PedidoDTO getDTO() {
		List<ItemPedidoDTO> itemspedidos= new ArrayList<ItemPedidoDTO>();
		CentroDistribucionDTO centro=null;
		if(this.centroDistribucion != null){
			centro = this.centroDistribucion.getDTO();
		}
		
		TiendaDTO tienda= this.getTienda().getDTO();
		for(ItemPedido a : this.getItemsPedidos()){
			itemspedidos.add(a.getDTO());
		}
	
		PedidoDTO replica= new PedidoDTO(this.getRef(), this.isPendienteDeDistribucion(), tienda, centro,itemspedidos);
		return replica;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	
}
